// 找到二叉搜索树中的众数
import { TreeNode } from '../base/tree-node';
//使用Map记录每个节点出现的次数
function findMode(root: TreeNode | null): number[] {
  if (!root) {
    return [];
  }
  const maps = new Map<number, number>();
  function dfs(root: TreeNode | null) {
    if (!root) {
      return;
    }
    dfs(root.left);
    maps.set(root.val, (maps.get(root.val) || 0) + 1);
    dfs(root.right);
  }
  dfs(root);
  // 找到出现次数最多的节点值
  const maxCount = Math.max(...maps.values());
  return [...maps.entries()].filter(([_, count]) => count === maxCount).map(([val, _]) => val);
}
export default findMode;
